//
//  HomeViewController.swift
//  weibo1
//
//  Created by 代亚洲 on 16/4/16.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit

class HomeViewController: MainTableViewController {
//    重用标识符
    let StatusCellId = "StatusCellId"
//    当前控制器对应的model  懒加载
    private lazy var staruser: HomeuserModel = HomeuserModel()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 如果没有登录，才去设置
        if !userLogon {
            // 设置访客视图显示的内容
            // 取到访客视图？
            visView.setvistorinfo(nil, message: nil)
            return
        }
        loaddata()

        setUPUI()
        
    }
//    显示界面
    func setUPUI(){
//        注册cell
        tableView.registerClass(HomeTableViewCell.self, forCellReuseIdentifier: StatusCellId)
        
        // 设置自动计算行高
        // 需要给 contentView 底部添加一个约束,添加约束的时候一定要添加全
        tableView.rowHeight = UITableViewAutomaticDimension
        // 要设置预估行高
        // 干什么用的：确认在所有cell没有加载完全之前的tableView的contentSize(让tableView能够滚动起来)
        tableView.estimatedRowHeight = 250
        // 隐藏 tableView的分割线
        tableView.separatorStyle = .None
        // 设置tableView的背景色
        tableView.backgroundColor = UIColor(white: 180/255, alpha: 1)
        // 初始化下载刷新的控件
        self.refreshControl = UIRefreshControl()
        // 设置tableView的footerView
        tableView.tableFooterView = pullupView
        
        // 给该控件添加监听事件  要保证loaddata确认正确 不然会 loadData]: unrecognized selector sent to instance 0x7fec1166f5b0
        self.refreshControl?.addTarget(self, action: "loaddata", forControlEvents: UIControlEvents.ValueChanged)

    }
    
    func  loaddata(){
        staruser.loaddata(pullupView.isAnimating()) { (isSucces) -> () in
            
            if isSucces{
//                刷新tableview
                self.tableView.reloadData()
            }else {
                print("数据请求失败")
            }
            
            // 停止菊花转
            self.endRefresh()
        }
    }
    
    // 停止菊花转
    private func endRefresh(){
        pullupView.stopAnimating()
        self.refreshControl?.endRefreshing()
    }
    
    // MARK: - 懒加载控件 菊花
    
    private lazy var pullupView: UIActivityIndicatorView = {
        let indicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.WhiteLarge)
        // 设置颜色
        indicatorView.color = UIColor.orangeColor()
        // 为了测试
        indicatorView.hidesWhenStopped = false
        return indicatorView
    }()
}


extension HomeViewController {
    
    // 将要加载某个cell的时候，会去掉用这个方法
    override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        
//       判断是否要加载最后一个
        if indexPath.row == (staruser.statusArray?.count)!-1 && !pullupView.isAnimating() {
            print("将要加载最后一个cell")
            // 1. 菊花转
            pullupView.startAnimating()
            // 2. 加载数据
            loaddata()
    }
    }
//    组
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return self.staruser.statusArray?.count ?? 0
    }
//    内容
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCellWithIdentifier(StatusCellId, forIndexPath: indexPath) as? HomeTableViewCell
//        赋值
//        cell!.textLabel?.text = self.staruser.statusArray![indexPath.row].text
//              staruser
        cell!.statusViewModel = staruser.statusArray![indexPath.row]

        return cell!
    }
//    cell de 高度
//    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
//        
//        return 200
//    }
    
}
